const Koa = require('koa');
const KoaStatic = require('koa-static');
const views = require('koa-views');

// const KoaBody = require('koa-body');

let { Port, uploadDir, staticDir } = require('./config');

let app = new Koa();

// // response
// app.use(ctx => {
//   ctx.body = 'Hello Koa';
// });

// 为静态资源请求重写url
app.use(async (ctx, next) => {
  if (ctx.url.startsWith('/public')) {
    ctx.url = ctx.url.replace('/public', '');
  }
  await next();
});

// 使用koa-static处理静态资源
app.use(KoaStatic(staticDir));

// 使用koa-views模版引擎
app.use(views(__dirname + '/dist', {
  // map: {
  //   html: 'underscore'
  // }
  // extension: 'ejs'
}));

// // 处理请求体数据
// app.use(KoaBody({
//   multipart: true,
//   // parsedMethods默认是['POST', 'PUT', 'PATCH']
//   parsedMethods: ['POST', 'PUT', 'PATCH', 'GET', 'HEAD', 'DELETE'],
//   formidable: {
//     uploadDir: uploadDir, // 设置文件上传目录
//     keepExtensions: true, // 保持文件的后缀
//     maxFieldsSize: 2 * 1024 * 1024, // 文件上传大小限制
//     onFileBegin: (name, file) => { // 文件上传前的设置
//       // console.log(`name: ${name}`); 
//       // console.log(file);
//     }
//   }
// }));

const routers = require('./routers');
app.use(routers.routes()).use(routers.allowedMethods());

// 监听服务器启动端口
app.listen(Port, () => {
  console.log(`服务器启动在${Port}端口`);
});